Пора встраивать код класса в каркас MFC. Все данные должны храниться в классе документа, он у нас CTestEllipseDoc поэтому в заголовочный файл включаем описание нашего класса.
// TestEllipseDoc.h : interface of the CTestEllipseDoc class // /////////////////////////////////////////////////////////////// #if !defined(AFX_TESTELLIPSEDOC_H__304EAAEB_FB25_11D3_B050_000001260696__INCLUDED_) #define AFX_TESTELLIPSEDOC_H__304EAAEB_FB25_11D3_B050_000001260696__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ContainerEllipce.h"
И переменную класса в классе документа.
class CTestEllipseDoc : public CDocument
{
........
public:
CContainerEllipce cEllipce;
virtual ~CTestEllipseDoc();
........
Первое, что делаем это в новом документе обнуляем массив и добавляем новый эллипс.
BOOL CTestEllipseDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
cEllipce.Clear();
cEllipce.Add(CRect(10,10,100,100));
return TRUE;
}
Зачем я сразу добавляю эллипс ??? Так его можно будет отредактировать потом. А зачем Вам пустой документ ????
Для сохранения документа нужно тоже писать код.
///////////////////////////////////////////////
// CTestEllipseDoc serialization
void CTestEllipseDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar << cEllipce.GetSize();
for (int x=0;x > i ;
CRect cr;
for (int x=0;x > cr;
cEllipce.Add(cr);
}
}
}
Идея простая, сначала записать сколько эллипсов, а потом и сами данные. При чтении также. Читаем сколько и потом по одному добавляем в массив.
Рисовать будет функция Draw в классе вида.
///////////////////////////////////////////////
// CTestEllipseView drawing
void CTestEllipseView::OnDraw(CDC* pDC)
{
CTestEllipseDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pDoc->cEllipce.Draw(pDC);
}
Она просто вызывает заранее подготовленную функцию рисование.